package json;

import java.net.URL;
import java.util.ResourceBundle;


import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.ComboBox;
import javafx.scene.control.TextArea;
import tools.Person;
import tools.PersonTools;
import tools.jsonparse.JSON;

public class JsonPageController implements Initializable{
	
	enum JSON_TYPE{
		FAST_JSON,
		GOOGLE_GSON,
		JSON
	}
	
	enum JSON_STR{
		STR_TO_BEAN,
		BEAN_TO_STR
	}
	
	
	
	ObservableList<JSON_TYPE> parseJsonTypeList=FXCollections.observableArrayList(JSON_TYPE.values());	
	ObservableList<JSON_STR> parseJsonStringList=FXCollections.observableArrayList(JSON_STR.values());
	
	@FXML
	private ComboBox<JSON_TYPE> parseJsonType;
	
	@FXML
	private ChoiceBox<JSON_STR> parseJsonString;
	
	@FXML
	private TextArea leftTextArea;
	
	@FXML
	private TextArea rightTextArea;
	
	@FXML
	private Button btnConvert;
	
	

	@Override
	public void initialize(URL location, ResourceBundle resources) {
		// TODO Auto-generated method stub
		parseJsonType.setValue(parseJsonTypeList.get(0));
		parseJsonType.setItems(parseJsonTypeList);
		
		parseJsonString.setValue(parseJsonStringList.get(0));
		parseJsonString.setItems(parseJsonStringList);
		
		leftTextArea.setText(PersonTools.personString());
		
		
	}
	
	@FXML
	private void jsonConvert() {
		String parsonType=parseJsonType.getValue().name();
		String parsonDir=parseJsonString.getValue().name();
		
		if(parsonType.equals(JSON_TYPE.FAST_JSON.name())) {
			if(parsonDir.equals(JSON_STR.STR_TO_BEAN.name())) {
				String str=leftTextArea.getText();
				Person person=JSON.strToBean(str, Person.class);
				rightTextArea.setText(JSON.strToPretty(person.toString()));
			}else {
				Person person=PersonTools.initPersons().get(2);
				rightTextArea.setText(JSON.strToPretty(person.toString()));
				leftTextArea.setText(JSON.strToPretty(JSON.beanToStr(person)));
			}
		}
	}
	
	
	

}
